本发明公开了一种基于媒介接入控制协议的无线传感器网络传输方法,采用自适应占空比调整机制和片段分组响应ACK机制,在考虑控制开销的情况下,增加了节点在一帧中交互数据的数量,有效地减小了延迟、提高了传输率,同时增大了网络吞吐量。本发明是基于竞争的MAC协议,同时采用了常见的周期性侦听/休眠机制、虚拟载波侦听机制、RTS/CTS/DATA/ACK带内信令以及消息分割机制,这些机制对节点的能耗,避免串听等都有积极的影响。本发明使得该MAC协议在面对突发事件时能够出色的完成检测任务,不仅适用于稀疏的、有突发传输的网络,也同样适用于密集的、高吞吐量的WSN网络。
1.一种基于媒介接入控制协议的无线传感器网络传输方法,其特征在于,该方法由应用程序确定通信周期,节点在所述通信周期里进行传输工作流程,当一个通信周期结束后,进入下一通信周期继续进行传输工作流程;所述通信周期的传输工作流程里,节点进行数据包发送,当每一个数据包发送结束时,所有节点进入睡眠,间隔时长t后进入下一数据包发送,直至本通信周期结束;每个所述的数据包发送流程包括以下步骤:1)唤醒所有节点,判断节点是否有数据发送,当节点有数据发送时,该节点为发送节点,该发送节点通过二进制指数退避方法竞争通信信道,如果赢得通信信道就发送请求发送帧RTS,然后进入步骤2),否则进入步骤6);当节点没有数据发送时,判断节点是否有数据要接收,如果是,该节点为接收节点,该接收节点回复清除发送帧CTS,与发送节点进行互相确认后开始传输数据,在成功传输该数据后,进入步骤6),否则该节点根据收到的请求发送帧RTS或者清除发送帧CTS更新自身的网络分配矢量NAV后,进入步骤6);2)发送节点的邻居节点收到请求发送帧RTS后,判断所述请求发送帧RTS是否是发给自身的,如果是,所述发送节点的邻居节点就是接收节点,所述接收节点回复清除发送帧CTS后,进入步骤3);否则,所述发送节点的邻居节点更新自身的网络分配矢量NAV后,进入步骤6);3)接收节点的邻居节点收到清除发送帧CTS后,判断所述清除发送帧CTS是否是发给自身的,如果是,就进入步骤4),否则,所述接收节点的邻居节点更新自身的网络分配矢量NAV后,进入步骤6);4)发送节点采用片段分组响应确认字符机制与接收节点交互数据包片段,具体步骤为:41)发送节点采用消息分割机制,将每个数据包分割成多个片段并赋予编号,按照编号顺序将每三个所述片段分为一个分组,发送节点将所述数据包以片段为单位传输给接收节点;42)接收节点接收到一个所述分组后,判断所述分组是否正确,如果正确则进入步骤5),否则回到步骤41);5)接收节点向发送节点发送确认字符ACK,发送节点接收到所述确认字符ACK后,进入步骤6);6)结束本数据包发送流程。
2.根据权利要求1所述的基于媒介接入控制协议的无线传感器网络传输方法,其特征在于,所述的两相邻数据包发送流程之间的间隔时长t是根据网络带宽和一个通信周期中所包括的时槽数确定的,取值为节点发送一个字节所需的时间长的80~120倍。
3.根据权利要求1所述的基于媒介接入控制协议的无线传感器网络传输方法,其特征在于,所述步骤42)中,接收节点接收到一个所述分组后,判断所述分组是否正确的方法为:根据数据包片段的编号,判断每个分组的三个片段是否完整,如果不完整,则判断为不正确,如果完整则进一步判断每个片段是否有错误,如果有错误,则判断为不正确,如果所有片段均无错误,则判断为正确。
技术领域本发明属于计算机网络技术领域,特别涉及一种基于媒介接入控制协议的无线传感器网络传输方法。
背景技术在一些监测突发事件的无线传感器网络(Wirelessxa0Sensorxa0Networks,WSN)中,如监测森林火灾的发生、在救护和反恐中的枪声、爆炸以及工业安全生产等领域,对数据传输要求比较高的实时性。节点在感知到事件发生时,需要快速地将采集到的信息传输给汇聚节点,通过互联网或卫星到达管理节点。用户通过管理节点对传感器网络进行配置和管理,发布监测任务以及收集监测数据。同时,对突发的事件采取及时有效的应对措施,使突发事件造成的损失最小。作为WSN网络协议栈重要基础架构的媒介接入控制(mediumxa0accessxa0control,简称MAC)协议,它决定无线信道的接入方式,负责为节点分配无线通信资源,对无线传感器网络的性能有极大影响,是保证无线传感器网络高效通信的关键网络协议之一。无线传感器网络MAC协议一般采用周期性的侦听和睡眠机制来降低能耗,有一部分的MAC采用一个固定占空比的侦听睡眠调度机制,协议中预先设定周期长度和占空比,节点在唤醒期间侦听数据包和进行数据通信,在睡眠期间使射频模块进入睡眠状态以降低能耗。为避免由于睡眠而影响节点的通信问题,节点之间需要形成一致的睡眠调度以确保同时睡眠同时唤醒。侦听/休眠机制能够有效的降低能耗。然而,采用侦听/休眠机制会在一定程度上导致传输数据的延迟,这在面向突发事件的无线传感器网络中严重的影响了网络的性能。减小延迟已是MAC协议普遍面临的问题,因为许多的突发事件都是采用无线传感器网络进行检测,如果检测到的数据不能够及时地传输,会造成严重的后果。DMAC协议对于传统的数据转发停顿问题,采用了对不同深度节点之间的活动和睡眠的交错调度机制,对多跳路径上的节点,交替地调度它们的活动期,顺序地唤醒各个节点就像一个连锁反应。数据包可以不断地在各节点间转发,传输给汇聚节点,这样就减小了数据的传输延迟。但是,DMAC协议要求严格的树形结构才能体现它的特性,在实际的应用中很难满足这一要求,所以DMAC协议的应用范围就受到了极大的限制。
发明内容技术问题:本发明针对由突发事件引发的有较大流量需要快速传输的无线传感网络应用场景,提供了一种能够在考虑能耗的情况下,降低延时、提高吞吐量,高效传输数据的基于媒介接入控制协议的无线传感器网络传输方法。技术方案:本发明基于媒介接入控制协议的无线传感器网络传输方法,由应用程序确定通信周期,节点在所述通信周期里进行传输工作流程,当一个通信周期结束后,进入下一通信周期继续进行传输工作流程;所述通信周期的传输工作流程里,节点进行数据包发送,当每一个数据包发送结束时,所有节点进入睡眠,间隔时长t后进入下一数据包发送,直至本通信周期结束;每个所述的数据包的发送流程包括以下步骤:1)唤醒所有节点,判断节点是否有数据发送,当节点有数据发送时,该节点为发送节点,该发送节点通过二进制指数退避方法竞争通信信道,如果赢得通信信道就发送请求发送帧RTS,然后进入步骤2),否则进入步骤6);当节点没有数据发送时,判断节点是否有数据要接收,如果是,该节点为接收节点,该接收节点回复清除发送帧CTS,与发送节点进行互相确认后开始传输数据,在成功传输该数据后,进入步骤6),否则该节点根据收到的请求发送帧RTS或者清除发送帧CTS更新自身的网络分配矢量NAV后,进入步骤6);2)发送节点的邻居节点收到请求发送帧RTS后,判断所述请求发送帧RTS是否是发给自身的,如果是,所述发送节点的邻居节点就是接收节点,所述接收节点回复清除发送帧CTS后,进入步骤3);否则,所述发送节点的邻居节点更新自身的网络分配矢量NAV后,进入步骤6);3)接收节点的邻居节点收到清除发送帧CTS后,判断所述清除发送帧CTS是否是发给自身的,如果是,就进入步骤4),否则,所述接收节点的邻居节点更新自身的网络分配矢量NAV后,进入步骤6);4)发送节点采用片段分组响应确认字符机制与接收节点交互数据包片段,具体步骤为:41)发送节点采用消息分割机制,将每个数据包分割成多个片段并赋予编号,按照编号顺序将每三个所述片段分为一个分组,发送节点将所述数据包以片段为单位传输给接收节点;42)接收节点接收到一个所述分组后,判断所述分组是否正确,如果正确则进入步骤5),否则回到步骤41);5)接收节点向发送节点发送确认字符ACK,发送节点接收到所述确认字符ACK后,进入步骤6);6)结束本数据包发送流程。本发明中,两相邻数据包发送流程之间的间隔时长t是根据网络带宽和一个通信周期中所包括的时槽数确定的,取值为节点发送一个字节所需的时间长的80~120倍。本发明的步骤42)中,接收节点接收到一个所述分组后,判断所述分组是否正确的方法为:根据数据包片段的编号,判断每个分组的三个片段是否完整,如果不完整,则判断为不正确,如果完整则进一步判断每个片段是否有错误,如果有错误,则判断为不正确,如果所有片段均无错误,则判断为正确。无线传感器网络主要集中的领域有:环境的监测和保护、医疗护理、智能家居、军事领域等。应用层主要用于传感器网络应用系统的开发,包括一系列基于监测任务的应用层软件,部署的传感器网络往往执行多种任务,如环境监测系统、交通管理系统、灾难预防系统、治疗系统维护等,在这些具体的应用中,都需要具体的应用程序。针对不同的应用场合,需要不同的应用程序来对网络中的数据业务进行控制,包括确定数据传输的通信周期。在网络中传输的数据包都与应用程序有关,包括数据包的大小、类型以及数量等。由于网络应用在不同的环境下,节点可感知到风速、温度、湿度、压力、位置等,在感知到这些物理量后,经过处理就可以在网络中传输。有益效果:本发明由于采取以上技术方案,具有以下优点:1.现有的MAC协议在一帧中只侦听一次,也就是在一帧中只传输一个数据包。而在本发明中,节点在一帧中可以侦听多次,所以可以传输多个包,极大地减小了数据包传输的延迟,增大了吞吐量。2.本发明中在动态添加侦听期的过程中并没有同步帧SYNC,主要是考虑到同步帧SYNC会增加不必要的开销。而且,现有的MAC协议在接收节点每收到一个片段,就会响应一次ACK。本发明中将片段进行了分组,每个分组包含三个片段,接收节点每收到一个分组就回复一次确认字符ACK,这样可以使确认字符ACK的开销减小到原来的三分之一左右。3.在考虑开销的情况下,有效地减少了同步帧SYNC和确认字符ACK的使用,这样并没有影响到节点之间的同步和隐藏终端情况。另外,结合自适应占空比调整机制,使数据包的传输延迟减小,增大了吞吐量。4.由于本发明的无线传感器网络传输方法是针对突发事件的场景设计的,所以该方法不仅适用于稀疏的、有突发传输的网络,也同样适用于流量较密集的WSN网络。
附图说明图1是本发明实施例应用场景示意图;图2是自适应占空比调整机制示意图;图3是片段分组响应ACK机制示意图;图4是本发明方法的逻辑流程框图。图中有:第一节点1、第二节点2、第三节点3、第四节点4、第五节点5、第六节点6、第一数据源节点S1、第二数据源节点S2、第三数据源节点S3、第四数据源节点S4。
具体实施方式下面结合附图和实施例对本发明进行详细点描述。本发明的基于媒介接入控制协议的无线传感器网络传输方法,由应用程序确定通信周期,节点在所述通信周期里进行传输工作流程,当一个通信周期结束后,进入下一通信周期继续进行传输工作流程;所述通信周期的传输工作流程里,节点进行数据包发送,当每一个数据包发送结束时,所有节点进入睡眠,间隔时长t后进入下一数据包发送,直至本通信周期结束;每个所述的数据包的发送流程包括以下步骤:1)唤醒所有节点,判断节点是否有数据发送,当节点有数据发送时,该节点为发送节点,该发送节点通过二进制指数退避方法竞争通信信道,如果赢得通信信道就发送请求发送帧RTS,然后进入步骤2),否则进入步骤6);当节点没有数据发送时,判断节点是否有数据要接收,如果是,该节点为接收节点,该接收节点回复清除发送帧CTS,与发送节点进行互相确认后开始传输数据,在成功传输该数据后,进入步骤6),否则该节点根据收到的请求发送帧RTS或者清除发送帧CTS更新自身的网络分配矢量NAV后,进入步骤6);2)发送节点的邻居节点收到请求发送帧RTS后,判断所述请求发送帧RTS是否是发给自身的,如果是,所述发送节点的邻居节点就是接收节点,所述接收节点回复清除发送帧CTS后,进入步骤3);否则,所述发送节点的邻居节点更新自身的网络分配矢量NAV后,进入步骤6);3)接收节点的邻居节点收到清除发送帧CTS后,判断所述清除发送帧CTS是否是发给自身的,如果是,就进入步骤4),否则,所述接收节点的邻居节点更新自身的网络分配矢量NAV后,进入步骤6);4)发送节点采用片段分组响应确认字符机制与接收节点交互数据包片段,具体步骤为:41)发送节点采用消息分割机制,将每个数据包分割成多个片段并赋予编号,按照编号顺序将每三个所述片段分为一个分组,发送节点将所述数据包以片段为单位传输给接收节点;42)接收节点接收到一个所述分组后,判断所述分组是否正确,如果正确则进入步骤5),否则回到步骤41);5)接收节点向发送节点发送确认字符ACK,发送节点接收到所述确认字符ACK后,进入步骤6);6)结束本数据包发送流程。本发明中,两相邻数据包发送流程之间的间隔时长t是根据网络带宽和一个通信周期中所包括的时槽数确定的,取值为节点发送一个字节所需的时间长的80~120倍。经过调试,在不同的拓扑结构下进行测试,得出比较优异的取值t,即t为发送一个字节所需时间长的100倍。在本发明中,为了便于表述机制,在一个通信周期内,将节点在睡眠时长t后唤醒的过程称为自适应占空比机制。时长t的确定通过以下四个公式获得:A=8.0÷Bxa0xa0(1)C=A×2.5xa0xa0(2)如果E>=C,则D=Exa0xa0(3)如果E<C,则D=Cxa0xa0(4)t=5.0×Dxa0xa0(5)其中第一个公式中的A是传输一个字节所需的时间,B为带宽,取值为20。第二个公式中的C为数据包开始的标志,取值为A的2.5倍。第三个公式和第四个公式中的D为一个时槽的长度,E为时钟分辨率,取值1ms。第五个公式的t为本发明中所述的时长t。本发明的步骤42)中,接收节点接收到一个所述分组后,判断所述分组是否正确的方法为:根据数据包片段的编号,判断每个分组的三个片段是否完整,如果不完整,则判断为不正确,如果完整则进一步判断每个片段是否有错误,如果有错误,则判断为不正确,如果所有片段均无错误,则判断为正确。其中,判断每个片段是否有错误的方法如下:每个数据包的包头中有一个变量error,在构建数据包时,将该变量设置为0。数据包经过多个节点的传输,可能由于冲突,该变量被改变为1。等下一跳节点收到时,会检查数据包包头中的变量error,如果为0确认该数据包正确,否则该数据包出错。图1是本发明实施例应用场景示意图。这种实施例符合一些检测突发事件的场合,当事件发生时,会有多个节点感知并采集到数据,需要通过不同的路径将数据包快速地传递给汇聚节点。图1表示在某一时刻,网络中有四个数据源节点:第一数据源节点S1、第二数据源节点S2、第三数据源节点S3、第四数据源节点S4。其中S2、S3、S4分别建立到汇聚节点D的路由分别是:第二数据源节点S2—第二节点2—第五节点5—节点6—汇聚节点D、第三数据源节点S3—第三节点3—第五节点5—第六节点6—汇聚节点D、第四数据源节点S4—第四节点4—第六节点6—汇聚节点D。第二数据源节点S2和第三数据源节点S3两个数据流在第五节点5汇聚,然后又与S4数据流在第六节点6汇聚。在第五节点5和第六节点6会出现流量的拥塞,给数据传输的延迟造成严重的影响。即使第一数据源节点S1数据源节点经过第一数据源节点S1—第一节点1—汇聚节点D进行传输,如果在MAC协议不理想的情况下,也会出现数据传输的延迟。在本发明中,采用了自适应占空比调整机制和片段分组响应ACK机制,在考虑控制开销的情况下,增加了节点在一帧中交互数据的数量,有效地减轻了流量拥塞,减小了延迟、提高了传输率,同时增大了网络吞吐量。图2是自适应占空比调整机制示意图。一些MAC协议采用固定占空比机制,在一帧中只有赢得信道的节点才可以通信,并且每次只发送一个数据包。其它需要发送数据包的节点只能等到下一帧,当一个周期内到达多个数据包,如果节点不能及时将到达的数据包发送出去,则数据包将在MAC队列中堆积起来从而导致很大的延迟。如果数据包持续堆积,节点的数据缓冲区队列将由于容量有限而溢出导致数据包丢失,从而严重影响系统性能。本发明MAC协议仍然将时间分为许多帧,如图2中帧周期为一帧的长度。每个节点采用周期性的侦听和睡眠,并且在每一帧的开始都会固定的醒来一定的时间进行侦听信道,即图2中的侦听期包括SYNC帧和RTS/CTS帧。同时,采用已有的虚拟载波侦听机制,每个节点都有一个网络配置向量NAV,为其设置一个定时器,通过改变NAV值,通信节点的邻节点就可以得知此次通信什么时候结束,以便作出必要的操作,不过在通信结束之前这些邻节点都是休眠的。本发明解决上述所提到的延迟问题的方法是:在一帧中开始第一次通信结束后,即图2中的发送者一发送数据包,并且接收者正确接收后,会动态的添加若干个小的侦听期,该侦听期不包括SYNC帧,即图中的请求发送帧/清除发送帧RTS/CTS,如图2中粗线框部分的请求发送帧/清除发送帧。此时刚才通信的节点,以及它们的邻节点都会醒来。如果此时这些节点都不需要发送数据包,它们会进入休眠,设定定时器时长t,当定时器超时就会醒来,再次进行侦听。如果有节点要发送数据,需要重新竞争信道,然后采用RTS/CTS/DATA/ACK的方式发送数据包。节点所进行的工作和在每帧开始时需要发送数据的工作是一样的。例如在第一个添加到侦听期,发送者二有数据要发送,并且竞争得到信道,发送者二发送数据包给发送者一。另外,在本发明中,每次通信结束后到下次添加侦听期的时间间隔是固定值,即图2中所示的间隔值,这个值t是发送一个字节所需时间的100倍。所以在自适应占空比调整机制引入以后,节点在一帧中可以发送多个包,极大地减小了数据包传输的延迟。图3是片段分组响应ACK机制示意图。对于一些MAC协议,如果节点有一个数据包需要发送,则节点会采用RTS/CTS/DATA/ACK的方式通过竞争信道发送数据包。节点首先通过RTS/CTS进行握手交互预约信道使用权,当成功完成交互过程后则可以发送数据包的片段。发送节点每发送数据包的一个片段,接收节点在成功接收后会回复一个清除发送帧ACK。另外,数据包的片段分的越少,数据包传输成功的概率就越小,所以通常会将一个数据包分为比较多的片段。这样,接收节点需要响应的清除发送帧ACK就比较多,在一定程度上增大了控制开销。本发明解决上述所提到的开销较大问题的方法是:在将数据包分割为片段的过程中,给每个片段编上不同的编号,然后按顺序将每三个片段分为一组,如图3中的片段一、片段二和片段三为一组。同样,接收节点在接收到一组片段后再回复一个清除发送帧ACK,即图3的片段三后的清除发送帧ACK就是接收节点在接收到片段一、片段二和片段三后回复给发送节点的。同时,接收节点在接收完一个分组会进行检查,看是否有片段没有接收到,或者是否有片段出差。如果有这种情况发生,就需要重发该片段。这样,在传输一个数据包的过程中,清除发送帧ACK的开销就可以减小为原来的三分之一左右。图4是方法流程的逻辑框图。本发明中主要提出了两个机制,分别是自适应占空比调整机制和片段分组响应ACK机制。整个MAC协议的设计中还采用了其他一些常用的机制。本发明的媒介接入方法仍然采用基于竞争的机制,支持竞争访问信道。将时间划分为许多帧,一次周期性侦听/睡眠时间长度为一帧,侦听期包括SYNC帧和RTS/CTS帧。采用RTS/CTS/DATA/ACK带内信令在节点之间进行数据交互。如果节点有数据要发送,通过退避竞争信道,在获得信道后就发送请求发送帧RTS,目的节点正确接收后回复清除发送帧CTS给源节点。源节点和目的节点的邻居节点在接收到请求发送帧RTS帧或者清除发送帧CTS后,会根据帧中的duration设置一个本地变量NAV,表明对这些节点来说此时信道不可用,它们需要进入睡眠。源节点和目的节点通过RTS/CTS交互预约到信道后,就开始传输数据包。采用消息分割机制,将一条长消息分割成多个小的片段进行传输,每个片段有自己的编号,然后按顺序每三个片段为一个分组,目的节点在接收一个分组后回复一个确认字符ACK。目的节点需要对接收的每一个分组进行检查,如果接收到的分组不完整或者有错误,就需要重发该片段。在本次通信结束后,通信节点睡眠一定的时间,设置定时器进行唤醒,该时间长度为发送一个字节所需时间的100倍。定时器超时会添加新的侦听期RTS/CTS,此时侦听期没有SYNC帧。刚才通信的节点,以及它的邻节点都会醒来。如果节点有数据要发送,会重新通过退避竞争信道,重复每一帧开始时发送数据包的过程。如果节点没有数据要发送,在侦听期结束后这些节点会进入睡眠,睡眠时间为发送一个字节所需时间的100倍,等定时器超时,再次唤醒这些节点,侦听信道以便传输数据。